<?php

class ConfiguracionController extends AppController {

    var $name = 'Configuracion';
    var $uses = array('Sistema', 'Modulo_sistema', 'Accion_sistema', 'Opcion_sistema', 'Sistema_modulo_sistema', 'Sistema_modulo_accion', 'Usuario_sistema',
        'Modulo_accion_opcion', 'Usuario', 'Permiso');
    var $helpers = array('Ajax', 'Html', 'Form', 'Javascript', 'Js', 'Json', 'For', 'Vista');
    var $layout = "ajax";
    var $components = array('Json', 'Util', 'For', 'Interfaz', 'Vista'/* ,'RequestHandler','DebugKit.Toolbar' */);

    public function beforeFilter() {
        $this->validar();
    }

    function index() {
        
    }

    public function listado_sistemas($busq = null) {
        $this->Vista->title('Listado de Sistemas');
        $data = $this->Sistema->find('all', array('conditions' => array("Sistema.id > " => '0')));
        $this->set('data', $data);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo_sistema($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
    }

    function guardar_nuevo_sistema() {
        $data = $this->request->data;
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Sistema', 'nombre', $data['nombre'], 'nombre')) {
            $this->Vista->mensaje('Este Nombre de Sistema ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else if ($this->Vista->verifica('Sistema', 'siglas', $data['siglas'], 'siglas')) {
            $this->Vista->mensaje('Estas SIGLAS de Sistema ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $data['Sistema']['nombre'] = $data['nombre'];
            $data['Sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['siglas']));
            $data['Sistema']['siglas'] = trim($data['siglas']);
            $data['Sistema']['estatus'] = 1;
            if ($this->Sistema->save($data)) {
                $this->Vista->mensaje('Sistema Registrado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Registrar el Sistema', 'ERROR');
        }
        $this->listado_sistemas();
        $this->render('listado_sistemas');
    }

    public function ver_datos_nuevo_sistema($div = 'vista', $divlistado = 'vista', $tipo, $id = null) {
        $data = $this->data = null;
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Sistema->find('first', array('conditions' => array("Sistema.id" => $id_limpio))));
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        if ($tipo == 2)
            $this->set('tipo', 'nada');
        else if ($tipo == 1)
            $this->set('tipo', 'guardar');
    }

    function guardar_modificar_nuevo_sistema() {
        $data = $this->request->data;
        $id_limpio = $this->Interfaz->id($data['id_sistema']);
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Sistema', 'nombre', $data['nombre'], 'nombre', $id_limpio)) {
            $this->Vista->mensaje('Este Nombre de Sistema ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else if ($this->Vista->verifica('Sistema', 'siglas', $data['siglas'], 'siglas', $id_limpio)) {
            $this->Vista->mensaje('Estas SIGLAS de Sistema ya se Encuentran Registradas', 'ERROR', 'siglas');
        } else {
            $d['Sistema']['id'] = $id_limpio;
            $d['Sistema']['nombre'] = $data['nombre'];
            $d['Sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['siglas']));
            $d['Sistema']['siglas'] = trim($data['siglas']);
            $d['Sistema']['estatus'] = 1;
            if ($this->Sistema->save($d)) {
                $this->Vista->mensaje('Datos de Sistema Modificado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Sistema', 'ERROR');
        }
        $this->listado_sistemas();
        $this->render('listado_sistemas');
    }

    function cambiar_estatus_sistema($id, $es) {
        $id_limpio = $this->Interfaz->id($id);
        if ($es == 0) {
            $estatus = 1;
            $msj = "Sistema Activado Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Sistema Desactivado Exitosamente!!!";
        }

        $d['Sistema']['id'] = $id_limpio;
        $d['Sistema']['estatus'] = $estatus;
        if ($this->Sistema->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Sistema', 'ERROR');

        $this->listado_sistemas();
        $this->render('listado_sistemas');
    }

    public function listado_modulos($busq = null) {
        $this->Vista->title('Listado de Modulos');
        $data = $this->Modulo_sistema->find('all', array('conditions' => array("Modulo_sistema.id>'0'")));
        $this->set('data', $data);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo_modulo($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
    }

    function guardar_nuevo_modulo() {
        $data = $this->request->data;
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ERROR');
        } else if ($this->Vista->verifica('Modulo_sistema', 'nombre', $data['nombre'], 'nombre')) {
            $this->Vista->mensaje('Este Nombre del Modulo ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $data['Modulo_sistema']['nombre'] = $data['nombre'];
            $data['Modulo_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $data['Modulo_sistema']['estatus'] = 1;
            if ($this->Modulo_sistema->save($data)) {
                $this->Vista->mensaje('Modulo Registrado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Registrar el Modulo', 'ERROR');
        }
        $this->listado_modulos();
        $this->render('listado_modulos');
    }

    public function ver_datos_nuevo_modulo($div = 'vista', $divlistado = 'vista', $tipo, $id = null) {
        $data = $this->data = null;
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Modulo_sistema->find('first', array('conditions' => array("Modulo_sistema.id" => $id_limpio))));
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        if ($tipo == 2)
            $this->set('tipo', 'nada');
        else if ($tipo == 1)
            $this->set('tipo', 'guardar');
    }

    function guardar_modificar_nuevo_modulo() {
        $data = $this->request->data;
        $id_limpio = $this->Interfaz->id($data['id_modulo']);
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Modulo_sistema', 'nombre', $data['nombre'], 'nombre', $id_limpio)) {
            $this->Vista->mensaje('Este Nombre de Modulo ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $d['Modulo_sistema']['id'] = $id_limpio;
            $d['Modulo_sistema']['nombre'] = $data['nombre'];
            $d['Modulo_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $d['Modulo_sistema']['estatus'] = 1;
            if ($this->Modulo_sistema->save($d)) {
                $this->Vista->mensaje('Datos del Modulo Modificado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Modulo', 'ERROR');
        }
        $this->listado_modulos();
        $this->render('listado_modulos');
    }

    function cambiar_estatus_modulo($id, $es) {
        $id_limpio = $this->Interfaz->id($id);

        if ($es == 0) {
            $estatus = 1;
            $msj = "Modulo Activado Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Modulo Desactivado Exitosamente!!!";
        }

        $d['Modulo_sistema']['id'] = $id_limpio;
        $d['Modulo_sistema']['estatus'] = $estatus;
        if ($this->Modulo_sistema->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos del Modulo', 'ERROR');

        $this->listado_modulos();
        $this->render('listado_modulos');
    }

    public function listado_acciones($busq = null) {
        $this->Vista->title('Listado de Acciones');
        $data = $this->Accion_sistema->find('all', array('conditions' => array("Accion_sistema.id>'0'")));
        $this->set('data', $data);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo_accion_sistema($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
    }

    function guardar_nuevo_accion_sistema() {
        $data = $this->request->data;
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Accion_sistema', 'nombre', $data['nombre'], 'nombre')) {
            $this->Vista->mensaje('Este Nombre de la Accion ya se Encuentra Registrada', 'ERROR', 'nombre');
        } else {
            $data['Accion_sistema']['nombre'] = $data['nombre'];
            $data['Accion_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $data['Accion_sistema']['estatus'] = 1;
            if ($this->Accion_sistema->save($data)) {
                $this->Vista->mensaje('Accion del Sistema Registrado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Registrar la Accion del Sistema', 'ERROR');
        }
        $this->listado_acciones();
        $this->render('listado_acciones');
    }

    public function ver_datos_nuevo_accion_sistema($div = 'vista', $divlistado = 'vista', $tipo, $id = null) {
        $data = $this->data = null;
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Accion_sistema->find('first', array('conditions' => array("Accion_sistema.id" => $id_limpio))));
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        if ($tipo == 2)
            $this->set('tipo', 'nada');
        else if ($tipo == 1)
            $this->set('tipo', 'guardar');
    }

    function guardar_modificar_nuevo_accion_sistema() {
        $data = $this->request->data;
        $id_limpio = $this->Interfaz->id($data['id_accion']);
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Accion_sistema', 'nombre', $data['nombre'], 'nombre', $id_limpio)) {
            $this->Vista->mensaje('Este Nombre de Accion ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $d['Accion_sistema']['id'] = $id_limpio;
            $d['Accion_sistema']['nombre'] = $data['nombre'];
            $d['Accion_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $d['Accion_sistema']['estatus'] = 1;
            if ($this->Accion_sistema->save($d)) {
                $this->Vista->mensaje('Datos de la Accion Modificado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion', 'ERROR');
        }
        $this->listado_acciones();
        $this->render('listado_acciones');
    }

    function cambiar_estatus_accion_sistema($id, $es) {
        $id_limpio = $this->Interfaz->id($id);

        if ($es == 0) {
            $estatus = 1;
            $msj = "Accion Activada Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Accion Desactivada Exitosamente!!!";
        }

        $d['Accion_sistema']['id'] = $id_limpio;
        $d['Accion_sistema']['estatus'] = $estatus;
        if ($this->Accion_sistema->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion', 'ERROR');

        $this->listado_acciones();
        $this->render('listado_acciones');
    }

    public function listado_opciones($busq = null) {
        $this->Vista->title('Listado de Opciones');
        $data = $this->Opcion_sistema->find('all', array('conditions' => array("Opcion_sistema.id>'0'")));
        $this->set('data', $data);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo_opcion_sistema($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
    }

    function guardar_nuevo_opcion_sistema() {
        $data = $this->request->data;
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Opcion_sistema', 'nombre', $data['nombre'], 'nombre')) {
            $this->Vista->mensaje('Este Nombre de la Opcion ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $data['Opcion_sistema']['nombre'] = $data['nombre'];
            $data['Opcion_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $data['Opcion_sistema']['estatus'] = 1;
            if ($this->Opcion_sistema->save($data)) {
                $this->Vista->mensaje('Opcion del Sistema Registrado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Registrar la Opcion del Sistema', 'ERROR');
        }
        $this->listado_opciones();
        $this->render('listado_opciones');
    }

    public function ver_datos_nuevo_opcion_sistema($div = 'vista', $divlistado = 'vista', $tipo, $id = null) {
        $data = $this->data = null;
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Opcion_sistema->find('first', array('conditions' => array("Opcion_sistema.id" => $id_limpio))));
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        if ($tipo == 2)
            $this->set('tipo', 'nada');
        else if ($tipo == 1)
            $this->set('tipo', 'guardar');
    }

    function guardar_modificar_nuevo_opcion_sistema() {
        $data = $this->request->data;
        $id_limpio = $this->Interfaz->id($data['id_opcion']);
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica('Opcion_sistema', 'nombre', $data['nombre'], 'nombre', $id_limpio)) {
            $this->Vista->mensaje('Este Nombre de Opcion ya se Encuentra Registrado', 'ERROR', 'nombre');
        } else {
            $d['Opcion_sistema']['id'] = $id_limpio;
            $d['Opcion_sistema']['nombre'] = $data['nombre'];
            $d['Opcion_sistema']['nombre_var'] = trim(str_replace(' ', '_', $data['nombre']));
            $d['Opcion_sistema']['estatus'] = 1;
            if ($this->Opcion_sistema->save($d)) {
                $this->Vista->mensaje('Datos de la Opcion Modificado Exitosamente', 'EXITO');
                $this->log();
            }
            else
                $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion', 'ERROR');
        }
        $this->listado_opciones();
        $this->render('listado_opciones');
    }

    function cambiar_estatus_opcion_sistema($id, $es) {
        $id_limpio = $this->Interfaz->id($id);

        if ($es == 0) {
            $estatus = 1;
            $msj = "Opcion Activada Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Opcion Desactivada Exitosamente!!!";
        }

        $d['Opcion_sistema']['id'] = $id_limpio;
        $d['Opcion_sistema']['estatus'] = $estatus;
        if ($this->Opcion_sistema->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion', 'ERROR');

        $this->listado_opciones();
        $this->render('listado_opciones');
    }

    public function listado_modulo_sistemas($busq = null) {
        $this->Vista->title('Listado de Modulos Por Sistema');
        $data = $this->Sistema->find('all', array('conditions' => array("Sistema.id >" => 0)));
        $modulos = array();
        $tam = array();
        for ($j = 0; $j < count($data); $j++) {
            $aux = $this->Sistema_modulo_sistema->find('all', array(
                'fields' => array("Sistema_modulo_sistema.id", "Sistema_modulo_sistema.estatus", "Modulo_sistema.nombre"),
                'conditions' => array("Sistema_modulo_sistema.sistema_id" => $data[$j]['Sistema']['id'])));

            $tam[$j] = count($aux);
            if ($tam[$j] == 0)
                $aux = null;
            $modulos[$j] = $aux;
        }

        $this->set('data', $data);
        $this->set('tam', $tam);
        $this->set('modulos', $modulos);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo_sistema_modulo_sistena($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sistema', $this->Util->lista_sistemas(1));
        $this->set('lista_modulo_sistema', $this->Util->lista_modulo_sistema());
    }

    function cambiar_estatus_sistema_modulo_sistema($id, $es) {
        $id_limpio = $this->Interfaz->id($id);

        if ($es == 0) {
            $estatus = 1;
            $msj = "Modulo del Sistema Activada Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Modulo del Sistema Desactivada Exitosamente!!!";
        }

        $d['Sistema_modulo_sistema']['id'] = $id_limpio;
        $d['Sistema_modulo_sistema']['estatus'] = $estatus;
        if ($this->Sistema_modulo_sistema->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion', 'ERROR');

        $this->listado_modulo_sistemas();
        $this->render('listado_modulo_sistemas');
    }

    function guardar_nuevo_sistema_modulo_sistema() {
        $data = $this->request->data;

        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica_dos('Sistema_modulo_sistema', 'sistema_id', 'modulo_sistema_id', $data['sistema_id'], $data['modulo_sistema_id'], 'modulo_sistema_id')) {
            $this->Vista->mensaje('Este Modulo ya se Encuentra Asignado al Sistema', 'ERROR', 'modulo_sistema_id');
        } else {
            $id_sistema = $data['sistema_id'];
            $this->Sistema_modulo_sistema->query('BEGIN  WORK');
            $d['Sistema_modulo_sistema']['sistema_id'] = $data['sistema_id'];
            $d['Sistema_modulo_sistema']['modulo_sistema_id'] = $data['modulo_sistema_id'];
            if ($this->Sistema_modulo_sistema->save($d)) {
                $this->log();
                $id = $this->Sistema_modulo_sistema->id;
                $d = null;
                $d['Sistema_modulo_accion']['sistema_modulo_sistema_id'] = $id;
                $d['Sistema_modulo_accion']['accion_sistema_id'] = $this->Accion_sistema->mi_id('ESTATUS');
                if ($this->Sistema_modulo_accion->save($d)) {
                    $this->log();
                    $id = $this->Sistema_modulo_accion->id;
                    $d = null;
                    $d['Modulo_accion_opcion']['sistema_modulo_accion_id'] = $id;
                    $d['Modulo_accion_opcion']['opcion_sistema_id'] = $this->Opcion_sistema->mi_id('ESTATUS');
                    if ($this->Modulo_accion_opcion->save($d)) {
                        $id_maoi = $this->Modulo_accion_opcion->id;
                        $res = $this->asigna_permiso_individual($id_sistema, $id_maoi);
                        if ($res) {
                            $this->Vista->mensaje('Se Asigno el Modulo al Sistema Exitosamente', 'EXITO');
                            $this->log();
                            $this->Sistema_modulo_sistema->query('COMMIT');
                        } else {
                            $this->Sistema_modulo_sistema->query('ROLLBACK');
                            $this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema', 'ERROR');
                        }
                    } else {
                        $this->Sistema_modulo_sistema->query('ROLLBACK');
                        $this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema', 'ERROR');
                    }
                } else {
                    $this->Sistema_modulo_sistema->query('ROLLBACK');
                    $this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema', 'ERROR');
                }
            } else {
                $this->Sistema_modulo_sistema->query('ROLLBACK');
                $this->Vista->mensaje('Ocurrio un Error al Asgnar Modulo al Sistema', 'ERROR');
            }
        }
        $this->listado_modulo_sistemas();
        $this->render('listado_modulo_sistemas');
    }

    public function listado_modulo_acion_sistemas($busq = null) {
        $this->Vista->title('Listado de Modulos Accion Por Sistema');
        $data = $this->Sistema->find('all', array('conditions' => array("Sistema.id >" => 0)));
        $modulos = array();
        $tam = array();
        for ($j = 0; $j < count($data); $j++) {
            $aux = $this->Sistema_modulo_sistema->find('all', array(
                'fields' => array("Sistema_modulo_sistema.id", "Sistema_modulo_sistema.estatus", "Modulo_sistema.nombre"),
                'conditions' => array("Sistema_modulo_sistema.sistema_id" => $data[$j]['Sistema']['id'])));

            $tam[$j] = count($aux);
            if ($tam[$j] == 0)
                $aux = null;
            $modulos[$j] = $aux;
        }

        $this->set('data', $data);
        $this->set('tam', $tam);
        $this->set('modulos', $modulos);
        $this->set('busq', $busq);
        $this->log();
    }

    public function listado_modulo_accion($div = 'vista', $divlistado = 'vista', $id_sistema = null) {
        $busq = '';
        $this->Vista->title('Listado de Modulos Accion Por Sistema');
        $data = $this->Sistema->find('all', array('conditions' => array("Sistema.estatus " => 1)));


        $datos2 = array();
        $modulos = array();
        $tam = array();
        for ($k = 0; $k < count($data); $k++) {
            $data2 = $this->Sistema_modulo_sistema->find('all', array(
                'fields' => array('Sistema_modulo_sistema.id', 'Modulo_sistema.nombre'),
                'conditions' => array("Sistema_modulo_sistema.sistema_id" => $data[$k]['Sistema']['id'])));
            $datos2[$k] = $data2;
            for ($j = 0; $j < count($data2); $j++) {
                $aux = $this->Sistema_modulo_accion->find('all', array(
                    'fields' => array("Sistema_modulo_accion.id", "Sistema_modulo_accion.estatus", "Accion_sistema.nombre"),
                    'conditions' => array("Sistema_modulo_accion.sistema_modulo_sistema_id" => $data2[$j]['Sistema_modulo_sistema']['id'])));

                $tam[$k][$j] = count($aux);
                if ($tam[$k][$j] == 0)
                    $aux = null;
                $modulos[$k][$j] = $aux;
            }
        }



        $this->set('lista_sistemas', $this->Util->lista_sistemas());
        $this->set('data', $data);
        $this->set('tam', $tam);
        $this->set('data2', $datos2);
        $this->set('modulos', $modulos);
        $this->set('busq', $busq);
        $this->set('id_sistema', $id_sistema);
        $this->log();
    }

    public function montar_modulos_sistemamodulo($id_sistema = null) {
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema)));
            if (count($acciones) == 0)
                $lista = null;
            else {
                for ($i = 0; $i < count($acciones); $i++)
                    $lista[$acciones[$i]['Sistema_modulo_sistema']['id']] = $acciones[$i]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function montar_acciones_sistemamodulo($id_sistema_modulo = null) {
        if (!isset($id_sistema_modulo)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema_modulo)));
            if (count($acciones) == 0)
                $lista = null;
            else {
                for ($i = 0; $i < count($acciones); $i++)
                    $lista[$acciones[$i]['Sistema_modulo_sistema']['id']] = $acciones[$i]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function nuevo_sistema_modulo_accion($div = 'vista', $divlistado = 'vista') {
        $data = $this->data = null;
        $id_sistema = 1;
        $this->set('div', $div);
        $this->set('id_sistema', $id_sistema);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sistema', $this->Util->lista_sistemas(1));
        $codigo = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema)));
        if (count($codigo) == 0)
            $lista = null;
        for ($k = 0; $k < count($codigo); $k++) {
            $lista[$codigo[$k]['Sistema_modulo_sistema']['id']] = $codigo[$k]['Modulo_sistema']['nombre'];
        }
        $this->set('lista_modulo_sistema', $lista);
        $this->set('lista_accion_sistema', $this->Util->lista_accion_sistema());
    }

    public function guardar_nuevo_sistema_modulo_accion() {
        $data = $this->request->data;
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica_dos('Sistema_modulo_accion', 'sistema_modulo_sistema_id', 'accion_sistema_id', $data['modulo_sistema_id'], $data['accion_sistema_id'], 'accion_sistema_id')) {
            $this->Vista->mensaje('Esta Accion ya se Encuentra Asignado al Modulo del Sistema', 'ERROR', 'accion_sistema_id');
        } else {
            $id_sistema = $data['id_sistema'];
            $this->Sistema_modulo_accion->query('BEGIN  WORK');
            $d['Sistema_modulo_accion']['sistema_modulo_sistema_id'] = $data['modulo_sistema_id'];
            $d['Sistema_modulo_accion']['accion_sistema_id'] = $data['accion_sistema_id'];
            if ($this->Sistema_modulo_accion->save($d)) {
                $this->log();
                $id = $this->Sistema_modulo_accion->id;
                $d = null;
                $d['Modulo_accion_opcion']['sistema_modulo_accion_id'] = $id;
                $d['Modulo_accion_opcion']['opcion_sistema_id'] = $this->Opcion_sistema->mi_id('ESTATUS');
                if ($this->Modulo_accion_opcion->save($d)) {
                    $id_maoi = $this->Modulo_accion_opcion->id;
                    $res = $this->asigna_permiso_individual($id_sistema, $id_maoi);
                    if ($res) {
                        $this->Vista->mensaje('Se Asigno la Accion al Modulo del Sistema Exitosamente', 'EXITO');
                        $this->log();
                        $this->Sistema_modulo_accion->query('COMMIT');
                    } else {
                        $this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema', 'ERROR');
                        $this->Sistema_modulo_accion->query('ROLLBACK');
                    }
                } else {
                    $this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema', 'ERROR');
                    $this->Sistema_modulo_accion->query('ROLLBACK');
                }
            } else {
                $this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema', 'ERROR');
                $this->Sistema_modulo_accion->query('ROLLBACK');
            }
        }
        $this->listado_modulo_accion('vista', 'vista', $data['id_sistema']);
        $this->render('listado_modulo_accion');
    }

    function cambiar_estatus_sistema_modulo_accion($id, $es) {
        $id_limpio = $this->Interfaz->id($id);

        if ($es == 0) {
            $estatus = 1;
            $msj = "Accion del Sistema Activada Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Accion del Sistema Desactivada Exitosamente!!!";
        }

        $d['Sistema_modulo_accion']['id'] = $id_limpio;
        $d['Sistema_modulo_accion']['estatus'] = $estatus;
        if ($this->Sistema_modulo_accion->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Accion', 'ERROR');

        $this->listado_modulo_accion('vista', 'vista');
        $this->render('listado_modulo_accion');
    }

    public function listado_modulo_accion_opcion($div = 'vista', $divlistado = 'vista', $id_sistema = null, $id_modulo = null) {
        $busq = '';
        $this->Vista->title('Listado de Modulos Accion Por Sistema');
        $data = $this->Sistema->find('all', array('conditions' => array("Sistema.estatus " => 1)));
        $datos2 = array();
        $modulos = array();
        $tam = array();
        $opciones = array();
        $tam2 = array();
        for ($k = 0; $k < count($data); $k++) {
            $data2 = $this->Sistema_modulo_sistema->find('all', array(
                'fields' => array('Sistema_modulo_sistema.id', 'Modulo_sistema.nombre'),
                'conditions' => array("Sistema_modulo_sistema.sistema_id" => $data[$k]['Sistema']['id'])));
            $datos2[$k] = $data2;
            for ($j = 0; $j < count($data2); $j++) {
                $aux = $this->Sistema_modulo_accion->find('all', array(
                    'fields' => array("Sistema_modulo_accion.id", "Sistema_modulo_accion.estatus", "Accion_sistema.nombre"),
                    'conditions' => array("Sistema_modulo_accion.sistema_modulo_sistema_id" => $data2[$j]['Sistema_modulo_sistema']['id'])));

                $tam[$k][$j] = count($aux);
                if ($tam[$k][$j] == 0)
                    $aux = null;
                $modulos[$k][$j] = $aux;
                for ($z = 0; $z < $tam[$k][$j]; $z++) {
                    $aux2 = $this->Modulo_accion_opcion->find('all', array(
                        'fields' => array("Modulo_accion_opcion.id", "Modulo_accion_opcion.estatus", "Opcion_sistema.nombre"),
                        'conditions' => array("Modulo_accion_opcion.sistema_modulo_accion_id" => $modulos[$k][$j][$z]['Sistema_modulo_accion']['id'])));
                    $tam2[$k][$j][$z] = count($aux2);
                    if ($tam2[$k][$j][$z] == 0)
                        $aux2 = null;
                    $opciones[$k][$j][$z] = $aux2;
                }
            }
        }



        $this->set('lista_sistemas', $this->Util->lista_sistemas());
        $this->set('data', $data);
        $this->set('tam', $tam);
        $this->set('data2', $datos2);
        $this->set('tam2', $tam2);
        $this->set('opciones', $opciones);
        $this->set('modulos', $modulos);
        $this->set('busq', $busq);
        $this->set('id_sistema', $id_sistema);
        $this->log();
    }

    public function montar_modulos_sistemamodulo2($id_sistema = null) {
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema)));
            if (count($acciones) == 0)
                $lista = null;
            else {
                for ($i = 0; $i < count($acciones); $i++)
                    $lista[$acciones[$i]['Sistema_modulo_sistema']['id']] = $acciones[$i]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function montar_modulo_listado($divlistado = 'vista', $id_sistema = null) {
        $this->set('divlistado', $divlistado);
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema)));
            if (count($acciones) == 0)
                $lista = null;
            for ($k = 0; $k < count($acciones); $k++) {
                $lista[$acciones[$k]['Sistema_modulo_sistema']['id']] = $acciones[$k]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_modulos', $lista);
    }

    public function nuevo_sistema_modulo_accion_opcion($div = 'vista', $divlistado = 'vista') {

        $data = $this->data = null;
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sistema', $this->Util->lista_sistemas(1));
    }

    public function montar_modulos($id_sistema = null) {
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_accion->find('all', array('fields' => 'Sistema_modulo_accion.id, Accion_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.id' => $id_sistema)));
            if (count($acciones) == 0)
                $lista = null;
            for ($k = 0; $k < count($acciones); $k++) {
                $lista[$acciones[$k]['Sistema_modulo_accion']['id']] = $acciones[$k]['Accion_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function montar_opciones($id_sistema_modulo_accion = null) {
        if (!isset($id_sistema_modulo_accion)) {
            $acciones = null;
            $lista = null;
        } else {
            $lista = $this->Opcion_sistema->find('list', array('fields' => 'Opcion_sistema.id, Opcion_sistema.nombre', 'conditions' => array('Opcion_sistema.estatus' => 1)));
        }
        $this->set('lista_opcion_sistema', $lista);
    }

    public function guardar_nuevo_sistema_modulo_accion_opcion() {
        $data = $this->request->data;
        $id_sistema = $data['sistema_id'];
        $data = $this->Interfaz->data($data);
        $rep = 0;
        if ($this->Vista->empyt($data)) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->verifica_dos('Modulo_accion_opcion', 'sistema_modulo_accion_id', 'opcion_sistema_id', $data['sistema_modulo_accion_id'], $data['opcion_sistema_id'], 'opcion_sistema_id')) {
            $this->Vista->mensaje('Esta Opcion ya se Encuentra Asignado al Modulo del Sistema', 'ERROR', 'opcion_sistema_id');
        } else {

            $this->Modulo_accion_opcion->query('BEGIN  WORK');
            $d['Modulo_accion_opcion']['sistema_modulo_accion_id'] = $data['sistema_modulo_accion_id'];
            $d['Modulo_accion_opcion']['opcion_sistema_id'] = $data['opcion_sistema_id'];
            if ($this->Modulo_accion_opcion->save($d)) {
                $id = $this->Modulo_accion_opcion->id;
                $res = $this->asigna_permiso_individual($id_sistema, $id);
                if ($res) {
                    $this->Vista->mensaje('Se Asigno la Opcion al Modulo del Sistema Exitosamente', 'EXITO');
                    $this->Sistema_modulo_accion->query('COMMIT');
                } else {
                    $this->Vista->mensaje('Ocurrio un Error al Asignar Opcion al Modulo del Sistema', 'ERROR');
                    $this->Modulo_accion_opcion->query('ROLLBACK');
                }
            } else {
                $this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema', 'ERROR');
                $this->Modulo_accion_opcion->query('ROLLBACK');
            }
        }
        $this->log();
        $this->listado_modulo_accion_opcion();
        $this->render('listado_modulo_accion_opcion');
    }

    function cambiar_estatus_sistema_modulo_accion_opcion($id, $es) {
        $id_limpio = $this->Interfaz->id($id);
        if ($es == 0) {
            $estatus = 1;
            $msj = "Accion del Sistema Activada Exitosamente!!!";
        } else {
            $estatus = 0;
            $msj = "Accion del Sistema Desactivada Exitosamente!!!";
        }

        $d['Modulo_accion_opcion']['id'] = $id_limpio;
        $d['Modulo_accion_opcion']['estatus'] = $estatus;
        if ($this->Modulo_accion_opcion->save($d)) {
            $this->Vista->mensaje($msj, 'EXITO');
            $this->log();
        }
        else
            $this->Vista->mensaje('Ocurrio un Error al Modificar Datos de la Opcion', 'ERROR');
        $this->listado_modulo_accion_opcion();
        $this->render('listado_modulo_accion_opcion');
    }

    function asigna_permiso_individual($id_sistema, $modulo_accion_opcion_id) {
        $f = $this->Usuario_sistema->find('all', array('fields' => array('Usuario.id', 'Usuario.tipo_usuario_id'),
            'conditions' => array('Usuario_sistema.sistema_id' => $id_sistema), 'order' => 'Usuario.id ASC'));
        $ban = 1;
        for ($i = 0; $i < count($f); $i++) {
            $a = $this->Permiso->find('first', array('fields' => array('Permiso.id'),
                'conditions' => array('Permiso.usuario_id' => $f[$i]['Usuario']['id'], 'Permiso.modulo_accion_opcion_id' => $modulo_accion_opcion_id)));
            if (!isset($a['Permiso']['id'])) {
                $this->data = NULL;
                if ($f[$i]['Usuario']['tipo_usuario_id'] == 1)
                    $est = 1;
                else
                    $est = 0;
                $d['Permiso']['usuario_id'] = $f[$i]['Usuario']['id'];
                $d['Permiso']['modulo_accion_opcion_id'] = $modulo_accion_opcion_id;
                $d['Permiso']['permiso'] = $est;
                if ($this->Permiso->saveAll($d)) {
                    $ban = $ban * 1;
                } else {
                    $ban = 0;
                    break;
                }
            }
        }

        return $ban;
    }

    public function filtrado_configuracion($div = 'vista', $divlistado = 'vista') {
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sistema', $this->Util->lista_sistemas(1));
    }

    public function montar_modulos_sistemamodulo_filtro($id_sistema = null) {
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema)));
            if (count($acciones) == 0)
                $lista = null;
            else {
                for ($i = 0; $i < count($acciones); $i++)
                    $lista[$acciones[$i]['Sistema_modulo_sistema']['id']] = $acciones[$i]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function listado_filtrado_configuracion() {
        $data = $this->request->data;


        $opciones = $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' => 1), 'fields' => array('Opcion_sistema.id', 'Opcion_sistema.nombre'), 'order' => 'Opcion_sistema.id ASC'));

        $id = $data['modulo_sistema_id'];
        $mod_acci = $this->Sistema_modulo_accion->find('all', array('conditions' => array('Sistema_modulo_accion.sistema_modulo_sistema_id' => $id), 'fields' => array('Sistema_modulo_accion.id', 'Accion_sistema.nombre')));
        $tam = count($mod_acci);
        if ($tam > 0) {
            for ($j = 0; $j < count($mod_acci); $j++) {
                $accion[$j] = $mod_acci[$j]['Accion_sistema']['nombre'];
                for ($k = 0; $k < count($opciones); $k++) {
                    $n = $this->Modulo_accion_opcion->find('first', array('conditions' => array('Modulo_accion_opcion.sistema_modulo_accion_id' => $mod_acci[$j]['Sistema_modulo_accion']['id'], 'opcion_sistema_id' => $opciones[$k]['Opcion_sistema']['id']), 'fields' => array('id')));
                    if (!empty($n['Modulo_accion_opcion']['id']) && $n['Modulo_accion_opcion']['id'] > 0)
                        $r = 'SI';
                    else
                        $r = 'NO';
                    $accion_opcion[$j][$k] = $r;
                }
            }
        }
        else {
            $accion[0] = 'Nada';
            $accion_opcion[0][0] = 'Nada';
        }
        $this->set('acciones', $accion);
        $this->set('tamanio', $tam);
        $this->set('accion_opcion', $accion_opcion);

        $this->set('opciones', $opciones);

        /*
          No es facil vivir en un mundo intranquilo y confuso
          es dificil creer cuando existe tanta incertidumbre
          es penoso esperar cuando hay tanta confucion
          $id_sistema=$data['sistema_id'];
          $data=$this->Interfaz->data($data);
          $rep=0;
          if($this->Vista->empyt($data))
          {
          $this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
          }
          else if($this->Vista->verifica_dos('Modulo_accion_opcion','sistema_modulo_accion_id','opcion_sistema_id',$data['sistema_modulo_accion_id'],$data['opcion_sistema_id'],'opcion_sistema_id'))
          {
          $this->Vista->mensaje('Esta Opcion ya se Encuentra Asignado al Modulo del Sistema','ERROR','opcion_sistema_id');
          }
          else
          {

          $this->Modulo_accion_opcion->query('BEGIN  WORK');
          $d['Modulo_accion_opcion']['sistema_modulo_accion_id']=$data['sistema_modulo_accion_id'];
          $d['Modulo_accion_opcion']['opcion_sistema_id']=$data['opcion_sistema_id'];
          if ($this->Modulo_accion_opcion->save($d))
          {
          $id=$this->Modulo_accion_opcion->id;
          $res=$this->asigna_permiso_individual($id_sistema,$id);
          if($res)
          {
          $this->Vista->mensaje('Se Asigno la Opcion al Modulo del Sistema Exitosamente','EXITO');
          $this->Sistema_modulo_accion->query('COMMIT');
          }
          else
          {
          $this->Vista->mensaje('Ocurrio un Error al Asignar Opcion al Modulo del Sistema','ERROR');
          $this->Modulo_accion_opcion->query('ROLLBACK');
          }
          }
          else
          {
          $this->Vista->mensaje('Ocurrio un Error al Asignar Accion al Modulo del Sistema','ERROR');
          $this->Modulo_accion_opcion->query('ROLLBACK');
          }
          }
          $this->log();
         */
    }

    function ver_configuracion($div = 'vista', $divlistado = 'vista', $id_sistema = null) {
        if (!isset($id_sistema)) {
            $data = $this->Sistema->find('first', array('conditions' => array("Sistema.estatus " => 1)));
            $id_sistema = $data['Sistema']['id'];
////$id_sistema=1;
        }

        $modu = $this->Sistema_modulo_sistema->find('all', array('conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema, 'Sistema_modulo_sistema.estatus' => 1), 'order' => 'Sistema_modulo_sistema.id ASC', 'fields' => array('Sistema_modulo_sistema.id', 'Modulo_sistema.nombre')));
        if (count($modu) > 0) {
            $opciones = $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' => 1), 'fields' => array('Opcion_sistema.id', 'Opcion_sistema.nombre'), 'order' => 'Opcion_sistema.id ASC'));
            for ($i = 0; $i < count($modu); $i++) {
                $id = $modu[$i]['Sistema_modulo_sistema']['id'];
                $mod_acci = $this->Sistema_modulo_accion->find('all', array('conditions' => array('Sistema_modulo_accion.sistema_modulo_sistema_id' => $id), 'fields' => array('Sistema_modulo_accion.id', 'Accion_sistema.nombre')));
                $tam[$i] = count($mod_acci);
                if ($tam[$i] > 0) {
                    for ($j = 0; $j < count($mod_acci); $j++) {
                        $accion[$i][$j] = $mod_acci[$j]['Accion_sistema']['nombre'];
                        for ($k = 0; $k < count($opciones); $k++) {
                            $n = $this->Modulo_accion_opcion->find('first', array('conditions' => array('Modulo_accion_opcion.sistema_modulo_accion_id' => $mod_acci[$j]['Sistema_modulo_accion']['id'], 'opcion_sistema_id' => $opciones[$k]['Opcion_sistema']['id']), 'fields' => array('id')));
                            if (!empty($n['Modulo_accion_opcion']['id']) && $n['Modulo_accion_opcion']['id'] > 0)
                                $r = 'SI';
                            else
                                $r = 'NO';
                            $accion_opcion[$i][$j][$k] = $r;
                        }
                    }
                }
                else {
                    $accion[$i][0] = 'Nada';
                    $accion_opcion[$i][0][0] = 'Nada';
                }
            }
        } else {
            $accion = NULL;
            $tam = NULL;
            $accion_opcion = NULL;
            $modu = NULL;
            $opciones = NULL;
        }
        $this->set('acciones', $accion);
        $this->set('tamanio', $tam);
        $this->set('accion_opcion', $accion_opcion);
        $this->set('modulos', $modu);
        $this->set('opciones', $opciones);
        $this->set('id_sistema', $id_sistema);
        $this->set('lista_sistema', $this->Util->lista_sistemas());
    }

}
